//
//  WSPXConfiguration.h
//  WSPX
//
//  Created by mato on 15/9/11.
//  Copyright © 2015年 ChinaNetCenter. All rights reserved.
//

#import <Foundation/Foundation.h>

@protocol WSPXConfigurationDelegate<NSObject>

@optional

/**
 *  实现此代理函数可全量接收MAA的实时日志
 *
 *  @param logContent
 */
- (void)wspxRealTimeLogConent:(NSDictionary *)logContent;

/**
 *  SDK完成启动动作之后会调用此函数
 *  -在此函数被调用之前的网络请求不会被加速，为防止漏加速，请这此调用之后发起网络请求
 *  —特殊情况下，必须在网络鉴权完成之后才能启动加速服务，这一过程会因网络状况等而有所延迟，请知悉
 *  -如果你也使用了NSURLProtocol，请在此函数里进行注册，以防止其失效
 *
 *  @param success SDK 是否启动成功
 */
- (void)wspxDidStart:(BOOL)success;

/**
 *  告诉wspx你是否需要自己处理某个特定的authentication challenge。
 *  返回值为YES，就可以在wspxDidReceiveAuthenticationChallenge:自己处理认证请求。否则wspx将按系统默认方式来处理。
 *  @param protectionSpace 某个特定的authentication challenge的protection Space。
 *
 *  @return 返回值指示了是否自己来处理authentication challenge。
 */
- (BOOL)wspxCanAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace;

/**
 *  可以在此代理函数中自己完成认证请求，比如可以做自签名证书的认证。
 *  @param challenge 某个特定的authentication challenge。
 *
 *  @return 返回值 NSURLCredential 生成认证结果返回给wspx。
 */
- (NSURLCredential *)wspxDidReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;

/**
 *  通知该认证请求已经被取消
 *  @param challenge 某个特定的authentication challenge。
 */
- (void)wspxDidCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;

@end

@interface WSPXConfiguration : NSObject

@property(nonatomic, weak) id<WSPXConfigurationDelegate> delegate;

/**
 *  设置全局黑名单，值为正则表达式，当URL匹配到blacklistHostRegexString之后则不进行导流加速。
 *  如 NSString *blacklistHostRegexString = @"baidu.com";
 *  请注意，iOS7及iOS9以上该正则黑名单是去匹配整条URL，而在iOS6/8上只能匹配到URL中的host，所以需要区分配置
 */
@property(nonatomic, copy) NSString *blacklistHostRegexString;

/**
 *  为了便于问题追踪，您需要将用户的唯一识别码设置进来
 */
@property(nonatomic, copy) NSString *deviceIdentifier;

+ (WSPXConfiguration *)defaultConfiguration;

+ (WSPXConfiguration *)configurationWithDeviceIdentifier:(NSString *)deviceIdentifier;

@end
